/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Compras.Controlador;

import CharliesCookies.MainController;
import com.dp1.pucp.Compras.DAO.ProveedorDAO;
import com.dp1.pucp.Compras.VIsta.ProveedorGUI;
import com.dp1.pucp.Modelo.Clases.Proveedor;
import com.dp1.pucp.Seguridad.DAO.LogDAO;
import com.dp1.pucp.Util.Validaciones;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

/**
 *
 * @author ubuntu64
 */
public class ProveedorControlador {

    private ProveedorDAO m;
    private ProveedorGUI ProveedorView;
    private Proveedor prov;
    private ProveedorControlador ProveedorControlador;
    private final static int ESTADO_ACTIVO = 1;

    public ProveedorControlador(ProveedorDAO dao, ProveedorGUI view, ProveedorControlador buc, Proveedor proveedor) {
        m = dao;
        ProveedorView = view;
        ProveedorControlador = buc;
        prov = proveedor;
        ProveedorView.llenaComboCategoria(m.listarCategoria());
        ProveedorView.llenaComboDepartamento(m.listarDepartamento());
        ProveedorView.llenaComboProvincia(m.listarProvincia(ProveedorView.getDepartamento()));
        ProveedorView.llenaComboDistrito(m.listarDistrito(ProveedorView.getProvincia()));


        ProveedorView.setFormProveedor(prov);

        if (prov != null) {
//            ProveedorView.llenaComboCategoria(m.listarCategoria(prov.getCategoria()));
            ProveedorView.setDepartamento(prov.getDistrito().getProvincia().getDepartamento().getIddepartamento() - 1);
            ProveedorView.llenaComboProvincia(m.listarProvincia(prov.getDistrito().getProvincia().getDepartamento()));
            ProveedorView.llenaComboDistrito(m.listarDistrito(prov.getDistrito().getProvincia()));

        }

        ProveedorView.addCancelarListener(new cancelarListener());
        ProveedorView.addLimpiarListener(new limpiarListener());
        ProveedorView.addGuardarListener(new guardarProveedorListener());
        ProveedorView.addSeleccionDepartamentoListener(new seleccionDepartamentoListener());
        ProveedorView.addSeleccionProvinciaListener(new seleccionProvinciaListener());

    }

    class cancelarListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            LogDAO.insertarLog(MainController.usuario, "Salir Proveedor");
            ProveedorView.dispose();
        }
    }

    class limpiarListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            ProveedorView.LimpiarDatos();
        }
    }

    class seleccionDepartamentoListener implements ItemListener {

        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange() == ItemEvent.SELECTED) {
                ProveedorView.llenaComboProvincia(m.listarProvincia(ProveedorView.getDepartamento()));
            }
        }
    }

    class seleccionProvinciaListener implements ItemListener {

        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange() == ItemEvent.SELECTED) {

                ProveedorView.llenaComboDistrito(m.listarDistrito(ProveedorView.getProvincia()));
            }
        }
    }

    class guardarProveedorListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            Proveedor a = new Proveedor();
            boolean esnuevo = true;

            a.setIdproveedor(ProveedorView.proveedor.getIdproveedor());
            a.setRazonsocial(ProveedorView.getRazonSocial());
            a.setRuc(ProveedorView.getRUC());
            a.setContacto(ProveedorView.getContacto());
            a.setCorreo(ProveedorView.getCorreo());
            a.setCategoria(1);
            a.setTelefonocontacto(ProveedorView.getTelefono());
            a.setDireccionfiscal(ProveedorView.getDireccion());
            a.setDistrito(ProveedorView.getDistrito());
            a.setEstado(1);
//            m.guardarProveedor(a);   

            if (prov != null) {
                a.setIdproveedor(prov.getIdproveedor());
                esnuevo = false;
            }
            m.guardarProveedor(a);

            if (esnuevo) {
                Validaciones.mostrarMensajeAvisoVal("El proveedor ha sido creado correctamente.");
                LogDAO.insertarLog(MainController.usuario, "Agregar Proveedor");

            } else {
                Validaciones.mostrarMensajeAvisoVal("El proveedor ha sido modificado correctamente.");
                LogDAO.insertarLog(MainController.usuario, "Modificar Proveedor");

            }

//            if (prov!=null)
//            { a.setIdproveedor(prov.getIdproveedor());
//              ProveedorView.mostrarAviso("Se modificó el proveedor con éxito");
//            } else{
//              ProveedorView.mostrarAviso("Se registró el proveedor con éxito");  
//            }

//            EmpleadoControlador.listarResultados(1);
            ProveedorView.dispose();
        }
    }
}
